﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;
using System.Windows.Forms;


namespace DataAccess
{
    public class Config
    {
        public SqlConnection con;
        public SqlCommand cmd;
        public SqlDataAdapter da;
        public Config()
        {
            this.Connection();
        }
        public void Connection()
        {
            try
            {
                con = new SqlConnection(ConfigurationManager.ConnectionStrings["connec"].ConnectionString);
                con.Open();
                if (con.State == ConnectionState.Open)
                {
                    con.Close();
                }
            }
            catch(SqlException ex)
            {
                MessageBox.Show("Không thể kết nối tới database" + " " + ex.Message.ToString(), "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        //hàm đưa dữ liệu vào bảng truyền vào hàm là 1 chuỗi kết nối.
        //hàm này trả về 1 bảng
        public DataTable getDatatable(string sql)
        {
            cmd = new SqlCommand(sql, con);
            cmd.CommandType = CommandType.StoredProcedure;
            da = new SqlDataAdapter();
            da.SelectCommand = cmd;
            DataTable table = new DataTable();
            da.Fill(table);
            return table;
        }

        //hàm thực hiện các tác vụ thêm sửa xoá.
        //truyền vào hàm 1 chuỗi kết nối, name, object, và số lượng đối tượng.
        public int Execute(string sql, string[] name, object[] value, int so_luong)
        {
            cmd = new SqlCommand(sql, con);
            cmd.CommandType = CommandType.StoredProcedure;
            if (con.State == ConnectionState.Closed)
            {
                con.Open();
            }
            //duyệt từ đầu mãng đến cuối mãng
            for (int i = 0; i < so_luong; i++)
            {
                cmd.Parameters.AddWithValue(name[i], value[i]);
            }
            return cmd.ExecuteNonQuery();
        }

        //hàm chuẩn hoá chuỗi.
        //vd user nhập vào chuỗi "họC    LậP tRình  "
        //sau khi gọi hàm chuẩn hoá chuỗi sẽ được như sau "Học Lập Trình"
        public string ChuanHoaChuoi(string a)
        {
            string s = "";
            if (a == "")
            {  
                //Nếu a = rỗng thì không làm gì hết.
            }
            else
            {
                //cắt bỏ các khoản trắng thừa ở đầu và cuối chuỗi sau đó chuyển toàn bộ chuỗi về chữ thường
                a = a.Trim().ToLower();
                while (a.IndexOf("\t") >= 0)
                {
                    //lấy ra chỉ số của từng ký tự khi nào gặp tab thì thay thế bằng dấu cách
                    a = a.Replace("\t", " ");
                }
                while (a.IndexOf("  ") >= 0)
                {
                    //lấy ra chỉ số của từng ký tự khi nào gặp 2 dấu cách thì thay thế bằng 1 dấu cách
                    a = a.Replace("  ", " ");
                }
                //khi nào gặp dấu cách là cắt thành 1 chuỗi
                string[] arr = a.Split(' ');
                foreach (string item in arr)
                {
                    //cắt chuỗi và chuyển chữ cái thứ 0 gồm 1 ký tự thành chữ Hoa
                    //chuyển các ký tự thứ 1 thành chữ thường.
                    s += item.Substring(0, 1).ToUpper() + item.Substring(1).ToLower()+ " ";
                }
            }
            return s;
        }
    }
}
